package com.sztx.pay.center.dataaccess.dao.mysql;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.sztx.pay.center.dataaccess.domain.UserBindCardDO;
import com.sztx.se.dataaccess.mysql.BaseMysqlDAO;
import com.sztx.se.dataaccess.mysql.config.PageQuery;

public interface UserBindCardMysqlDAO extends BaseMysqlDAO<UserBindCardDO> {
    

    UserBindCardDO listPage(@Param("userBindCardDO") UserBindCardDO userBindCardDO, @Param("pageQuery") PageQuery pageQuery);

    Integer listCount(@Param("userBindCardDO") UserBindCardDO userBindCardDO);    
    
    UserBindCardDO findByChannel(@Param("channelId") String channelId, @Param("channelBindCardNo") String channelBindCardNo);
    
    UserBindCardDO findByBindCardNo(@Param("userId") String userId, @Param("bindType") Integer bindType, @Param("bindCardNo") String bindCardNo);
    
    List<UserBindCardDO> findByCardNo(@Param("userId") String userId, @Param("bindType") Integer bindType, @Param("cardNo") String cardNo);
    
    List<UserBindCardDO> findByCardNoLock(@Param("userId") String userId, @Param("bindType") Integer bindType, @Param("cardNo") String cardNo);
    
    void updateBindCard(@Param("userBindCardDO") UserBindCardDO userBindCardDO, @Param("bindCardNo") String bindCardNo);
    
    UserBindCardDO findByIdAndUser(@Param("userId") String userId, @Param("bindCardNo") String bindCardNo);
    
    void unBindPrimaryCard(@Param("userId") String userId, @Param("bindType") Integer bindType);
    
    List<UserBindCardDO> listUserBindCardInfo(@Param("userId") String userId, @Param("bindType") Integer bindType, @Param("status") Integer status );    
   
    List<UserBindCardDO> listMchBindCardInfo(@Param("userId") String userId, @Param("pageQuery") PageQuery pageQuery, @Param("status") Integer status,@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("companyName")String companyName );    
    
    int countMchBindCard(@Param("userId") String userId, @Param("status") Integer status,@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("companyName")String companyName );    
    
    UserBindCardDO findByUserCardNo(@Param("bindCardNo") String bindCardNo);
    
    UserBindCardDO findByUserCardNoLock(@Param("bindCardNo") String bindCardNo);
    
    UserBindCardDO findByUserCardNoForSchedule(@Param("bindCardNo") String bindCardNo);
    
    void batchSave(List<UserBindCardDO> list);
    
    UserBindCardDO lastUserBindCardInfo(@Param("userId") String userId, @Param("bindType") Integer bindType, @Param("status") Integer status );

    List<UserBindCardDO> findAll();
}